WebAssembly ์ปค์คํ ์น์ ์ ์ญํ , ์ค์ํ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ๋๋ฒ๊ทธ ์ ๋ณด ์๋ฒ ๋ฉ, ๊ทธ๋ฆฌ๊ณ Wasm ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ํ๊ณ๋ฅผ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
WebAssembly์ ์ ์ฌ๋ ฅ ์์ ํด๋ฐฉ: ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ํ ์ปค์คํ ์น์ ์ฌ์ธต ๋ถ์
WebAssembly(Wasm)๋ ์น ๋ธ๋ผ์ฐ์ ๋ถํฐ ์๋ฒ๋ฆฌ์ค ํจ์, ์๋ฒ ๋๋ ์์คํ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๊ฒฝ์์ ๊ณ ์ฑ๋ฅ, ๋ณด์์ฑ, ์ด์์ฑ์ ๊ฐ์ถ ์คํ์ ์ํ ํต์ฌ ๊ธฐ์ ๋ก ๋น ๋ฅด๊ฒ ๋ถ์ํ์ต๋๋ค. ์ปดํฉํธํ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท, ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ ฅํ ๋ณด์ ์๋๋ฐ์ค๋ C, C++, Rust, Go์ ๊ฐ์ ์ธ์ด์ ์ด์์ ์ธ ์ปดํ์ผ ๋์์ผ๋ก ๋ง๋ค์ด์ค๋๋ค. Wasm ๋ชจ๋์ ํต์ฌ์ ๊ตฌ์กฐํ๋ ๋ฐ์ด๋๋ฆฌ๋ก, ํจ์, ์ํฌํธ, ์ต์คํฌํธ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์ ์ํ๋ ๋ค์ํ ์น์ ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํ์ง๋ง Wasm ๋ช ์ธ๋ ์๋์ ์ผ๋ก ํต์ฌ ์คํ ๋ชจ๋ธ์๋ง ์ง์คํ์ฌ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด์ก์ต๋๋ค.
์ด๋ฌํ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ ๋์์ธ์ ํจ์จ์ ์ธ ํ์ฑ๊ณผ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฐ์ ์ ๋๋ค. ํ์ง๋ง ํ์ค Wasm ๊ตฌ์กฐ์ ๊น๋ํ๊ฒ ๋ค์ด๋ง์ง๋ ์์ง๋ง ๊ฑด๊ฐํ ๊ฐ๋ฐ ์ํ๊ณ์ ํ์์ ์ธ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น์? ๋๊ตฌ๋ค์ ํต์ฌ ๋ช ์ธ๋ฅผ ๋ถ๋ด์ค๋ฝ๊ฒ ๋ง๋ค์ง ์์ผ๋ฉด์ ์ด๋ป๊ฒ ํ๋ถํ ๋๋ฒ๊น ๊ฒฝํ์ ์ ๊ณตํ๊ณ , ๋ชจ๋์ ์ถ์ฒ๋ฅผ ์ถ์ ํ๋ฉฐ, ์ปค์คํ ์ ๋ณด๋ฅผ ์๋ฒ ๋ํ ์ ์์๊น์? ๊ทธ ํด๋ต์ ๋ฐ๋ก WebAssembly ์ปค์คํ ์น์ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ ฅํ๋ฉด์๋ ์ข ์ข ๊ฐ๊ณผ๋๋ ํ์ฅ์ฑ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
์ด ์ข ํฉ ๊ฐ์ด๋์์๋ ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฒ๊ทธ ์ ๋ณด ์๋ฒ ๋ฉ์์์ ์ค์ํ ์ญํ ์ ์ด์ ์ ๋ง์ถฐ WebAssembly ์ปค์คํ ์น์ ์ ์ธ๊ณ๋ฅผ ํํํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ ๊ตฌ์กฐ, ์ค์ ์ ์ฉ ์ฌ๋ก, ๊ทธ๋ฆฌ๊ณ ์ ์ธ๊ณ์ ์ผ๋ก WebAssembly ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐ ๋ฏธ์น๋ ์ฌ๋ํ ์ํฅ์ ๋ํด ๊น์ด ํ๊ณ ๋ค ๊ฒ์ ๋๋ค.
WebAssembly ์ปค์คํ ์น์ ์ด๋?
ํต์ฌ์ ์ผ๋ก, WebAssembly ๋ชจ๋์ ์น์ ์ ์ฐ์์ ๋๋ค. ํ์ ์น์ , ์ํฌํธ ์น์ , ํจ์ ์น์ , ์ฝ๋ ์น์ , ๋ฐ์ดํฐ ์น์ ๊ณผ ๊ฐ์ ํ์ค ์น์ ๋ค์ Wasm ๋ฐํ์์ด ์๋ํ๋ ๋ฐ ํ์ํ ์คํ ๋ก์ง๊ณผ ํ์ ์ ์๋ฅผ ํฌํจํฉ๋๋ค. Wasm ๋ช ์ธ๋ ์ด๋ฌํ ํ์ค ์น์ ๋ค์ ๊ตฌ์กฐ์ ํด์์ ๊ท์ ํฉ๋๋ค.
ํ์ง๋ง ๋ช ์ธ๋ ๋ํ ํน๋ณํ ์ข ๋ฅ์ ์น์ ์ธ ์ปค์คํ ์น์ ์ ์ ์ํฉ๋๋ค. ํ์ค ์น์ ๊ณผ ๋ฌ๋ฆฌ, ์ปค์คํ ์น์ ์ WebAssembly ๋ฐํ์์ ์ํด ์์ ํ ๋ฌด์๋ฉ๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ์ค์ํ ํน์ง์ ๋๋ค. ๊ทธ ๋ชฉ์ ์ Wasm ์คํ ์์ง์ด ์๋, ํน์ ๋๊ตฌ๋ ํ๊ฒฝ์๋ง ๊ด๋ จ๋ ์์์ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค.
์ปค์คํ ์น์ ์ ๊ตฌ์กฐ
๋ชจ๋ WebAssembly ์น์
์ ID ๋ฐ์ดํธ๋ก ์์ํฉ๋๋ค. ์ปค์คํ
์น์
์ ๊ฒฝ์ฐ ์ด ID๋ ํญ์ 0x00์
๋๋ค. ID ๋ค์์๋ ์ปค์คํ
์น์
ํ์ด๋ก๋์ ์ด ๋ฐ์ดํธ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ ํฌ๊ธฐ ํ๋๊ฐ ์์ต๋๋ค. ํ์ด๋ก๋ ์์ฒด๋ ์ปค์คํ
์น์
์ ์๋ณํ๋ ์ด๋ฆ(๊ธธ์ด ์ ๋์ฌ๊ฐ ๋ถ์ UTF-8 ๋ฐ์ดํธ์ WebAssembly ๋ฌธ์์ด)์ผ๋ก ์์ํฉ๋๋ค. ํ์ด๋ก๋์ ๋๋จธ์ง ๋ถ๋ถ์ ์์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ด๋ฉฐ, ๊ทธ ๊ตฌ์กฐ์ ํด์์ ๊ทธ๊ฒ์ ์์ฑํ๊ณ ์๋นํ๋ ๋๊ตฌ์ ์ ์ ์ผ๋ก ๋งก๊ฒจ์ง๋๋ค.
- ID (1 ๋ฐ์ดํธ): ํญ์
0x00. - ํฌ๊ธฐ (LEB128): ์ ์ฒด ์ปค์คํ ์น์ ํ์ด๋ก๋์ ๊ธธ์ด(์ด๋ฆ๊ณผ ๊ทธ ๊ธธ์ด๋ฅผ ํฌํจ).
- ์ด๋ฆ ๊ธธ์ด (LEB128): ์ปค์คํ ์น์ ์ด๋ฆ์ ๋ฐ์ดํธ ๋จ์ ๊ธธ์ด.
- ์ด๋ฆ (UTF-8 ๋ฐ์ดํธ): ์ปค์คํ
์น์
์ ์๋ณํ๋ ๋ฌธ์์ด. ์:
"name","producers",".debug_info". - ํ์ด๋ก๋ (์์์ ๋ฐ์ดํธ): ์ด ์ปค์คํ ์น์ ์ ํน์ ํ ์ค์ ๋ฐ์ดํฐ.
์ด ์ ์ฐํ ๊ตฌ์กฐ๋ ์์ฒญ๋ ์ฐฝ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. Wasm ๋ฐํ์์ด ์ด๋ฌํ ์น์ ์ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์์ ๋๊ตฌ ๊ณต๊ธ์ ์ฒด๋ ๋ฏธ๋์ Wasm ๋ช ์ธ ์ ๋ฐ์ดํธ์์ ํธํ์ฑ ๋ฌธ์ ๋ ๊ธฐ์กด ๋ฐํ์์ ๋ง๊ฐ๋จ๋ฆด ์ํ ์์ด ๊ฑฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์๋ฒ ๋ํ ์ ์์ต๋๋ค.
์ ์ปค์คํ ์น์ ์ด ํ์ํ๊ฐ?
์ปค์คํ ์น์ ์ ํ์์ฑ์ ๋ช ๊ฐ์ง ํต์ฌ ์์น์์ ๋น๋กฏ๋ฉ๋๋ค:
- ๊ณผ๋ถํ ์๋ ํ์ฅ์ฑ: Wasm ํต์ฌ ๋ช ์ธ๋ ์ต์ํ์ผ๋ก ์ ์ง๋๋ฉฐ ์ง์ค๋ฉ๋๋ค. ์ปค์คํ ์น์ ์ ํต์ฌ ๋ฐํ์์ ๋ณต์ก์ฑ์ ๋ํ๊ฑฐ๋ ๊ฐ๋ฅํ ๋ชจ๋ ๋ถ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํ์คํํ์ง ์๊ณ ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ ๊ณต์์ ์ธ ํ์ถ๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํด๋ง ์ํ๊ณ: ์ปดํ์ผ๋ฌ, ์ต์ ํ ๋๊ตฌ, ๋๋ฒ๊ฑฐ, ๋ถ์ ๋๊ตฌ ๋ฑ ํ๋ถํ ์ํ๊ณ๋ ๋ฉํ๋ฐ์ดํฐ์ ์์กดํฉ๋๋ค. ์ปค์คํ ์น์ ์ ์ด๋ฌํ ๋๊ตฌ๋ณ ์ ๋ณด๋ฅผ ์ํ ์๋ฒฝํ ์๋จ์ ๋๋ค.
- ํ์ ํธํ์ฑ: ๋ฐํ์์ด ์ปค์คํ ์น์ ์ ๋ฌด์ํ๋ฏ๋ก, ์๋ก์ด ๊ฒ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๊ฒ์ ์์ ํด๋ ์ค๋๋ ๋ฐํ์์ ๋ง๊ฐ๋จ๋ฆฌ์ง ์์ Wasm ์ํ๊ณ ์ ๋ฐ์ ๊ฑธ์ณ ๋์ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ฐ๋ฐ์ ๊ฒฝํ: ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฒ๊น ์ ๋ณด๊ฐ ์๋ค๋ฉด, ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ๋ก ์์ ํ๋ ๊ฒ์ ๊ทน๋๋ก ์ด๋ ต์ต๋๋ค. ์ปค์คํ ์น์ ์ ์ ์์ค Wasm๊ณผ ๊ณ ์์ค ์์ค ์ฝ๋ ์ฌ์ด์ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์, ์ ์ธ๊ณ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์๊ฒ Wasm ๊ฐ๋ฐ์ ์ค์ฉ์ ์ด๊ณ ์ฆ๊ฒ๊ฒ ๋ง๋ญ๋๋ค.
๋ ๊ฐ์ง ๋ชฉ์ : ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฒ๊ทธ ์ ๋ณด
์ปค์คํ ์น์ ์ ์ด๋ก ์ ์ผ๋ก ์ด๋ค ๋ฐ์ดํฐ๋ ๋ด์ ์ ์์ง๋ง, ๊ฐ์ฅ ๋๋ฆฌ ํผ์ ธ ์๊ณ ์ํฅ๋ ฅ ์๋ ์ ์ฉ ๋ถ์ผ๋ ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฒ๊ทธ ์ ๋ณด๋ผ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ฒ์ฃผ๋ก ๋๋ฉ๋๋ค. ์ด ๋ ๊ฐ์ง ๋ชจ๋ ์ฑ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ๋งค์ฐ ์ค์ํ๋ฉฐ, ๋ชจ๋ ์๋ณ์์๋ถํฐ ๋ณต์กํ ๋ฒ๊ทธ ํด๊ฒฐ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฒ์ ๋์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ํ ์ปค์คํ ์น์
๋ฉํ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํฉ๋๋ค. WebAssembly์ ๋งฅ๋ฝ์์ ์ด๊ฒ์ ๋ชจ๋ ์์ฒด, ๊ทธ ์์ค, ์ปดํ์ผ ๊ณผ์ , ๋๋ ์๋๋ ์ด์ ํน์ฑ์ ๋ํ ๋น์คํ ์ ๋ณด๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋๊ตฌ์ ๊ฐ๋ฐ์๊ฐ Wasm ๋ชจ๋์ ๋งฅ๋ฝ๊ณผ ์ถ์ฒ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
๋ฉํ๋ฐ์ดํฐ๋?
Wasm ๋ชจ๋๊ณผ ๊ด๋ จ๋ ๋ฉํ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ด๋ฒ์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ํฌํจํ ์ ์์ต๋๋ค:
- ๋ชจ๋์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ ํน์ ์ปดํ์ผ๋ฌ์ ๊ทธ ๋ฒ์ .
- ์๋ณธ ์์ค ์ธ์ด์ ๊ทธ ๋ฒ์ .
- ์ปดํ์ผ ์ค์ ์ ์ฉ๋ ๋น๋ ํ๋๊ทธ ๋๋ ์ต์ ํ ์์ค.
- ์ ์์, ์ ์๊ถ ๋๋ ๋ผ์ด์ ์ค ์ ๋ณด.
- ๋ชจ๋ ๊ณ๋ณด ์ถ์ ์ ์ํ ๊ณ ์ ๋น๋ ์๋ณ์.
- ํน์ ํธ์คํธ ํ๊ฒฝ์ด๋ ์ ๋ฌธ ๋ฐํ์์ ์ํ ํํธ.
๋ฉํ๋ฐ์ดํฐ์ ์ฌ์ฉ ์ฌ๋ก
๋ฉํ๋ฐ์ดํฐ ์๋ฒ ๋ฉ์ ์ค์ ์ ์ฉ์ ๊ด๋ฒ์ํ๋ฉฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ์ ๋ค์ํ ๋จ๊ณ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
๋ชจ๋ ์๋ณ ๋ฐ ๊ณ๋ณด
๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ง์ Wasm ๋ชจ๋์ ๋ฐฐํฌํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ํน์ ๋ชจ๋์ ์ด๋ค ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ๋์ง, ์ด๋ค ์์ค ์ฝ๋ ๋ฒ์ ์์ ์๋์ง, ๋๋ ์ด๋ค ํ์ด ๋น๋ํ๋์ง๋ฅผ ์๋ ๊ฒ์ ์ ์ง๋ณด์, ์ ๋ฐ์ดํธ ๋ฐ ๋ณด์ ๊ฐ์ฌ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋น๋ ID, ์ปค๋ฐ ํด์ ๋๋ ์ปดํ์ผ๋ฌ ์ง๋ฌธ๊ณผ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ ๊ฒฌ๊ณ ํ ์ถ์ ๋ฐ ์ถ์ฒ ํ์ธ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
ํด๋ง ํตํฉ ๋ฐ ์ต์ ํ
์ต์ ํ ๋๊ตฌ, ์ ์ ๋ถ์๊ธฐ ๋๋ ์ ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฌ๊ธฐ์ ๊ฐ์ ๊ณ ๊ธ Wasm ํด๋ง์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๋ ์ง๋ฅ์ ์ธ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ปค์คํ ์น์ ์ ๋ชจ๋์ด ํน์ ๊ฐ์ ํ์ ์ปดํ์ผ๋์์์ ๋ํ๋ด์ด ํ์ฒ๋ฆฌ ๋๊ตฌ์ ์ํ ๋ ๊ณต๊ฒฉ์ ์ธ ์ถ๊ฐ ์ต์ ํ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ณด์ ๋ถ์ ๋๊ตฌ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์ถ์ฒ์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๋ณด์ ๋ฐ ๊ท์ ์ค์
๊ท์ ๊ฐ ์๊ฒฉํ ์ฐ์ ์ด๋ ์๊ฒฉํ ๋ณด์ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ฆ๋ช ๋ฐ์ดํฐ๋ ๋ผ์ด์ ์ค ์ ๋ณด๋ฅผ Wasm ๋ชจ๋ ๋ด์ ์ง์ ์๋ฒ ๋ฉํ๋ ๊ฒ์ด ์ค์ํ ์ ์์ต๋๋ค. ์ด ๋ฉํ๋ฐ์ดํฐ๋ ์ํธํ ์๋ช ์ ํตํด ๋ชจ๋์ ์ถ์ฒ๋ ํน์ ํ์ค ์ค์์ ๋ํ ๊ฒ์ฆ ๊ฐ๋ฅํ ์ฆ๊ฑฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ท์ ์ค์์ ๋ํ ์ด๋ฌํ ๊ธ๋ก๋ฒ ๊ด์ ์ ๊ด๋ฒ์ํ ์ฑํ์ ํ์์ ์ ๋๋ค.
๋ฐํ์ ํํธ (๋นํ์ค)
ํต์ฌ Wasm ๋ฐํ์์ ์ปค์คํ
์น์
์ ๋ฌด์ํ์ง๋ง, ํน์ ํธ์คํธ ํ๊ฒฝ์ด๋ ์ปค์คํ
Wasm ๋ฐํ์์ ๊ทธ๊ฒ์ ์๋นํ๋๋ก ์ค๊ณ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์๋ฒ ๋๋ ์ฅ์น๋ฅผ ์ํด ์ค๊ณ๋ ์ปค์คํ
๋ฐํ์์ ํด๋น ๋ชจ๋์ ๋ํ ๋์์ด๋ ๋ฆฌ์์ค ํ ๋น์ ๋์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ์ํด "device_config" ์ปค์คํ
์น์
์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ธ Wasm ๋ช
์ธ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ๊ฐ๋ ฅํ๊ณ ํ๊ฒฝ์ ํนํ๋ ํ์ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
ํ์คํ ๋ฐ ์ผ๋ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ ์ปค์คํ ์น์ ์ ์
๋ช๋ช ์ปค์คํ ์น์ ์ ๊ทธ ์ ์ฉ์ฑ๊ณผ ํด์ฒด์ธ์์์ ๊ด๋ฒ์ํ ์ฑํ์ผ๋ก ์ธํด ์ฌ์ค์์ ํ์ค์ด ๋์์ต๋๋ค:
"name"์น์ : ๊ธฐ์ ์ ์ผ๋ก๋ ์ปค์คํ ์น์ ์ด์ง๋ง,"name"์น์ ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋๋ฒ๊น ๊ณผ ๊ฐ๋ฐ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด์ด์ ๊ฑฐ์ ๋ณดํธ์ ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค. ์ด๋ ํจ์, ์ง์ญ ๋ณ์, ์ ์ญ ๋ณ์, ๋ชจ๋ ๊ตฌ์ฑ ์์์ ์ด๋ฆ์ ์ ๊ณตํ์ฌ ์คํ ํธ๋ ์ด์ค์ ๋๋ฒ๊น ์ธ์ ์ ๊ฐ๋ ์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ด๊ฒ์ด ์์ผ๋ฉด ์ซ์ ์ธ๋ฑ์ค๋ง ๋ณด๊ฒ ๋์ด ํจ์ฌ ๋ ์ ์ฉํฉ๋๋ค."producers"์น์ : ์ด ์ปค์คํ ์น์ ์ WebAssembly Tools Interface(WATI)์ ์ํด ๋ช ์๋์์ผ๋ฉฐ, Wasm ๋ชจ๋์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ ํด์ฒด์ธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก"language"(์:"C","Rust"),"compiler"(์:"LLVM","Rustc"),"processed-by"(์:"wasm-opt","wasm-bindgen")์ ๊ฐ์ ํ๋๋ฅผ ํฌํจํฉ๋๋ค. ์ด ์ ๋ณด๋ ๋ฌธ์ ์ง๋จ, ์ปดํ์ผ ํ๋ฆ ์ดํด, ๋ค์ํ ๊ฐ๋ฐ ํ๊ฒฝ์์์ ์ผ๊ด๋ ๋น๋ ๋ณด์ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค."target_features"์น์ : WATI์ ์ผ๋ถ์ด๊ธฐ๋ ํ ์ด ์น์ ์ ๋ชจ๋์ด ์คํ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ WebAssembly ๊ธฐ๋ฅ(์:"simd","threads","bulk-memory")์ ๋์ดํฉ๋๋ค. ์ด๋ ๋ชจ๋์ด ํธํ ๊ฐ๋ฅํ ํ๊ฒฝ์์ ์คํ๋๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ํด์ฒด์ธ์ด ๋์๋ณ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค."build_id"์น์ : ๋ค์ดํฐ๋ธ ELF ์คํ ํ์ผ์ ์ ์ฌํ ์น์ ์์ ์๊ฐ์ ๋ฐ์"build_id"์ปค์คํ ์น์ ์ Wasm ๋ชจ๋์ ํน์ ๋น๋๋ฅผ ๋ํ๋ด๋ ๊ณ ์ ์๋ณ์(์ข ์ข ์ํธํ ํด์)๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ ๋ฐฐํฌ๋ Wasm ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ํํ ์์ค ์ฝ๋ ๋ฒ์ ๊ณผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ค์ํ๋ฉฐ, ์ ์ธ๊ณ ํ๋ก๋์ ํ๊ฒฝ์์์ ๋๋ฒ๊น ๋ฐ ์ฌํ ๋ถ์์ ํ์์ ์ ๋๋ค.
์ปค์คํ ๋ฉํ๋ฐ์ดํฐ ์์ฑ
์ปดํ์ผ๋ฌ๊ฐ ๋ง์ ํ์ค ์ปค์คํ ์น์ ์ ์๋์ผ๋ก ์์ฑํ์ง๋ง, ๊ฐ๋ฐ์๋ ์์ ๋ง์ ๊ฒ์ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ ์ ์ธ Wasm ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ, ์์ ๋ง์ ์ปค์คํ ๋ฒ์ ๊ด๋ฆฌ๋ ๋ผ์ด์ ์ค ์ ๋ณด๋ฅผ ์๋ฒ ๋ํ ์ ์์ต๋๋ค:
Wasm ๋ชจ๋์ ์ฒ๋ฆฌํ๊ณ ํน์ ๊ตฌ์ฑ์ด ํ์ํ ๋๊ตฌ๋ฅผ ์์ํด ๋ณด์ญ์์ค:
// ์ปค์คํ
์น์
์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ๋ํ ๊ฐ๋
์ ํํ
// ID: 0x00
// ํฌ๊ธฐ: (total_payload_size์ LEB128 ์ธ์ฝ๋ฉ)
// ์ด๋ฆ ๊ธธ์ด: ('my_tool.config' ๊ธธ์ด์ LEB128 ์ธ์ฝ๋ฉ)
// ์ด๋ฆ: "my_tool.config"
// ํ์ด๋ก๋: { "log_level": "debug", "feature_flags": ["A", "B"] }
Binaryen์ wasm-opt๋ ์ง์ ์ ์ธ Wasm ์กฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์น์
์ ์ฃผ์
ํ ์ ์์ต๋๋ค. ์์ ๋ง์ ์ปค์คํ
์น์
์ ์ค๊ณํ ๋๋ ๋ค์์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ๊ณ ์ ํ ์ด๋ฆ ์ง์ : ๋ค๋ฅธ ๋๊ตฌ๋ ๋ฏธ๋์ Wasm ํ์ค๊ณผ์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์ปค์คํ
์น์
์ด๋ฆ์ ์ ๋์ฌ๋ฅผ ๋ถ์ด์ญ์์ค(์:
"your_company.product_name.version"). - ๊ตฌ์กฐํ๋ ํ์ด๋ก๋: ๋ณต์กํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ, ํ์ด๋ก๋ ๋ด์์ ์ ์ ์๋ ์ง๋ ฌํ ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์๋ฅผ ๋ค์ด JSON(ํ์ง๋ง CBOR์ด๋ Protocol Buffers์ ๊ฐ์ ์ปดํฉํธํ ๋ฐ์ด๋๋ฆฌ ํ์์ด ํฌ๊ธฐ ํจ์จ์ฑ ๋ฉด์์ ๋ ๋์ ์ ์์)์ด๋ ๋ช ํํ๊ฒ ๋ฌธ์ํ๋ ๊ฐ๋จํ ์ปค์คํ ๋ฐ์ด๋๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: ์ปค์คํ ์น์ ์ ํ์ด๋ก๋ ๊ตฌ์กฐ๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์๋ค๋ฉด, ํ์ด๋ก๋ ์์ฒด ๋ด์ ๋ด๋ถ ๋ฒ์ ๋ฒํธ๋ฅผ ํฌํจํ์ฌ ๊ทธ๊ฒ์ ์๋นํ๋ ๋๊ตฌ์ ์ ๋ฐฉ ๋ฐ ํ๋ฐฉ ํธํ์ฑ์ ๋ณด์ฅํ์ญ์์ค.
๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ํ ์ปค์คํ ์น์
์ปค์คํ ์น์ ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ๋ณต์กํ ์ ์ฉ ์ค ํ๋๋ ๋๋ฒ๊ทธ ์ ๋ณด์ ์๋ฒ ๋ฉ์ ๋๋ค. ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ์ ๋ช ๋๊ฒ ์ด๋ ต์ต๋๋ค. ์๋ํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๊ณ ์์ค ์์ค ์ฝ๋๋ฅผ ์ ์์ค ๊ธฐ๊ณ ๋ช ๋ น์ด๋ก ๋ณํํ๋ฉด์ ๋ณ์๋ฅผ ์ต์ ํํ์ฌ ์์ ๊ฑฐ๋, ์ฐ์ฐ ์์๋ฅผ ๋ฐ๊พธ๊ฑฐ๋, ํจ์๋ฅผ ์ธ๋ผ์ธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ์ ํ ๋๋ฒ๊น ์ ๋ณด๊ฐ ์๋ค๋ฉด, ๊ฐ๋ฐ์๋ค์ Wasm ๋ช ๋ น์ด ์์ค์์ ๋๋ฒ๊น ํด์ผ ํ๋๋ฐ, ์ด๋ ํนํ ํฌ๊ณ ์ ๊ตํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ์ด๋ ต๊ณ ๋น์์ฐ์ ์ ๋๋ค.
์ต์ํ๋ ๋ฐ์ด๋๋ฆฌ ๋๋ฒ๊น ์ ์ด๋ ค์
์์ค ์ฝ๋๊ฐ WebAssembly๋ก ์ปดํ์ผ๋ ๋, ์ต์ ํ์ ์ต์ํ๋ฅผ ํฌํจํ ๋ค์ํ ๋ณํ์ ๊ฑฐ์นฉ๋๋ค. ์ด ๊ณผ์ ์ ๊ฒฐ๊ณผ์ ์ธ Wasm ๋ฐ์ด๋๋ฆฌ๋ฅผ ํจ์จ์ ์ด๊ณ ์ปดํฉํธํ๊ฒ ๋ง๋ค์ง๋ง ์๋ณธ ์์ค ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋ชจํธํ๊ฒ ๋ง๋ญ๋๋ค. ๋ณ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ ๊ฑฐ๋๊ฑฐ๋ ๋ฒ์๊ฐ ํํํ๋ ์ ์๊ณ , ํจ์ ํธ์ถ์ด ์ธ๋ผ์ธ๋ ์ ์์ผ๋ฉฐ, ์ฝ๋ ๋ผ์ธ์ด Wasm ๋ช ๋ น์ด์ ์ง์ ์ ์ธ ์ผ๋์ผ ๋งคํ์ ๊ฐ์ง ์์ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋๋ฒ๊ทธ ์ ๋ณด๊ฐ ํ์์ ์ด ๋๋ ์ง์ ์ ๋๋ค. ๊ทธ๊ฒ์ ์ ์์ค Wasm ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋ณธ ๊ณ ์์ค ์์ค ์ฝ๋๋ก ๋ค์ ๋งคํํ๋ ๋ค๋ฆฌ ์ญํ ์ ํ์ฌ, ๊ฐ๋ฐ์๊ฐ ์ต์ํ ๋งฅ๋ฝ์์ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ์ง๋จํ ์ ์๊ฒ ํด์ค๋๋ค.
๋๋ฒ๊ทธ ์ ๋ณด๋?
๋๋ฒ๊ทธ ์ ๋ณด๋ ๋๋ฒ๊ฑฐ๊ฐ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ์ ์๋ณธ ์์ค ์ฝ๋ ์ฌ์ด๋ฅผ ๋ฒ์ญํ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐ์ดํฐ ๋ชจ์์ ๋๋ค. ์ฃผ์ ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์์ค ํ์ผ ๊ฒฝ๋ก: ์ด๋ค ์๋ณธ ์์ค ํ์ผ์ด Wasm ๋ชจ๋์ ์ด๋ ๋ถ๋ถ์ ํด๋นํ๋์ง.
- ์ค ๋ฒํธ ๋งคํ: Wasm ๋ช ๋ น์ด ์คํ์ ์ ์์ค ํ์ผ์ ํน์ ์ค ๋ฒํธ์ ์ด๋ก ๋ค์ ๋ฒ์ญ.
- ๋ณ์ ์ ๋ณด: ํ๋ก๊ทธ๋จ ์คํ์ ๋ค๋ฅธ ์์ ์์ ๋ณ์์ ์๋ณธ ์ด๋ฆ, ํ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์น.
- ํจ์ ์ ๋ณด: ํจ์์ ์๋ณธ ์ด๋ฆ, ๋งค๊ฐ๋ณ์, ๋ฐํ ํ์ ๋ฐ ๋ฒ์ ๊ฒฝ๊ณ.
- ํ์ ์ ๋ณด: ๋ณต์กํ ๋ฐ์ดํฐ ํ์ (๊ตฌ์กฐ์ฒด, ํด๋์ค, ์ด๊ฑฐํ)์ ๋ํ ์์ธํ ์ค๋ช .
DWARF์ ์์ค ๋งต์ ์ญํ
๋๋ฒ๊ทธ ์ ๋ณด์ ์ธ๊ณ์์๋ ๋ ๊ฐ์ง ์ฃผ์ ํ์ค์ด ์ง๋ฐฐ์ ์ด๋ฉฐ, ์ด ๋ ๋ชจ๋ ์ปค์คํ ์น์ ์ ํตํด WebAssembly ๋ด์์ ๊ทธ ์ ์ฉ์ ์ฐพ์ต๋๋ค:
DWARF (Debugging With Attributed Record Formats)
DWARF๋ ์ฃผ๋ก ๋ค์ดํฐ๋ธ ์ปดํ์ผ ํ๊ฒฝ(์: ELF, Mach-O, COFF ์คํ ํ์ผ์ ์ํ GCC, Clang)๊ณผ ๊ด๋ จ๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๋ฒ๊น ๋ฐ์ดํฐ ํ์์ ๋๋ค. ์ด๊ฒ์ ์ปดํ์ผ๋ ํ๋ก๊ทธ๋จ๊ณผ ๊ทธ ์์ค์ ๊ด๊ณ์ ๊ฑฐ์ ๋ชจ๋ ์ธก๋ฉด์ ์ค๋ช ํ ์ ์๋ ๊ฒฌ๊ณ ํ๊ณ ๋งค์ฐ ์์ธํ ๋ฐ์ด๋๋ฆฌ ํ์์ ๋๋ค. Wasm์ด ๋ค์ดํฐ๋ธ ์ธ์ด์ ์ปดํ์ผ ๋์์ผ๋ก์์ ์ญํ ์ ๊ณ ๋ คํ ๋, DWARF๊ฐ WebAssembly์ ๋ง๊ฒ ์กฐ์ ๋ ๊ฒ์ ์์ฐ์ค๋ฌ์ด ์ผ์ ๋๋ค.
C, C++ ๋๋ Rust์ ๊ฐ์ ์ธ์ด๊ฐ ๋๋ฒ๊น
์ ํ์ฑํํ์ฌ Wasm์ผ๋ก ์ปดํ์ผ๋ ๋, ์ปดํ์ผ๋ฌ(์ผ๋ฐ์ ์ผ๋ก LLVM ๊ธฐ๋ฐ)๋ DWARF ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํฉ๋๋ค. ์ด DWARF ๋ฐ์ดํฐ๋ ์ผ๋ จ์ ์ปค์คํ
์น์
์ ์ฌ์ฉํ์ฌ Wasm ๋ชจ๋์ ์๋ฒ ๋๋ฉ๋๋ค. .debug_info, .debug_line, .debug_str, .debug_abbrev ๋ฑ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ DWARF ์น์
์ ์ด๋ฌํ ์ด๋ฆ์ ๋ฏธ๋ฌ๋งํ๋ Wasm ์ปค์คํ
์น์
๋ด์ ์บก์ํ๋ฉ๋๋ค(์: custom ".debug_info", custom ".debug_line").
์ด ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ์กด์ DWARF ํธํ ๋๋ฒ๊ฑฐ๋ฅผ WebAssembly์ ๋ง๊ฒ ์กฐ์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด ๋๋ฒ๊ฑฐ๋ค์ ์ด๋ฌํ ์ปค์คํ ์น์ ์ ํ์ฑํ๊ณ , ์์ค ์์ค์ ์ปจํ ์คํธ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ฉฐ, ์ต์ํ ๋๋ฒ๊น ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์์ค ๋งต (์น ์ค์ฌ Wasm์ฉ)
์์ค ๋งต์ ์ฃผ๋ก ์น ๊ฐ๋ฐ์์ ์ต์ํ๋๊ฑฐ๋ ํธ๋์คํ์ผ๋ JavaScript๋ฅผ ์๋ณธ ์์ค ์ฝ๋๋ก ๋ค์ ๋งคํํ๋ ๋ฐ ์ฌ์ฉ๋๋ JSON ๊ธฐ๋ฐ ๋งคํ ํ์์ ๋๋ค. DWARF๊ฐ ๋ ํฌ๊ด์ ์ด๊ณ ์ข ์ข ์ ์์ค ๋๋ฒ๊น ์ ์ ํธ๋์ง๋ง, ์์ค ๋งต์ ํนํ ์น์ ๋ฐฐํฌ๋ Wasm ๋ชจ๋์ ๋ํด ๋ ๊ฐ๋ฒผ์ด ๋์์ ์ ๊ณตํฉ๋๋ค.
Wasm ๋ชจ๋์ ์ธ๋ถ ์์ค ๋งต ํ์ผ์ ์ฐธ์กฐํ๊ฑฐ๋(์: JavaScript์ ์ ์ฌํ๊ฒ Wasm ๋ฐ์ด๋๋ฆฌ ๋์ ์ฃผ์์ ํตํด), ๋ ์์ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ ์ต์ํ์ ์์ค ๋งต ๋๋ ๊ทธ ์ผ๋ถ๋ฅผ ์ปค์คํ
์น์
๋ด์ ์ง์ ์๋ฒ ๋ํ ์ ์์ต๋๋ค. wasm-pack(Rust๋ฅผ Wasm์ผ๋ก ๋ณํ)๊ณผ ๊ฐ์ ๋๊ตฌ๋ ์์ค ๋งต์ ์์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ Wasm ๋ชจ๋์ ๋ํ ์์ค ์์ค ๋๋ฒ๊น
์ ์ ๊ณตํ ์ ์๊ฒ ํฉ๋๋ค.
DWARF๊ฐ ๋ ํ๋ถํ๊ณ ์์ธํ ๋๋ฒ๊น ๊ฒฝํ(ํนํ ๋ณต์กํ ํ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฒ์ฌ์ ๋ํด)์ ์ ๊ณตํ์ง๋ง, ์์ค ๋งต์ ์ข ์ข ๊ธฐ๋ณธ ์์ค ์์ค ๋จ๊ณ๋ณ ์คํ ๋ฐ ํธ์ถ ์คํ ๋ถ์์ ์ถฉ๋ถํ๋ฉฐ, ํนํ ํ์ผ ํฌ๊ธฐ์ ํ์ฑ ์๋๊ฐ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ธ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ๊ทธ๋ ์ต๋๋ค.
๋๋ฒ๊น ์ ์ด์
Wasm ์ปค์คํ ์น์ ๋ด์ ํฌ๊ด์ ์ธ ๋๋ฒ๊ทธ ์ ๋ณด๊ฐ ์์ผ๋ฉด ๋๋ฒ๊น ๊ฒฝํ์ด ๊ทผ๋ณธ์ ์ผ๋ก ๋ฐ๋๋๋ค:
- ์์ค ์์ค ๋จ๊ณ๋ณ ์คํ: ๋๋ฒ๊ฑฐ๋ ๋ชจํธํ Wasm ๋ช ๋ น์ด๊ฐ ์๋ ์๋ณธ C, C++ ๋๋ Rust ์ฝ๋์ ํน์ ์ค์์ ์คํ์ ์ค๋จํ ์ ์์ต๋๋ค.
- ๋ณ์ ๊ฒ์ฌ: ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ Wasm ๋ก์ปฌ ๋ณ์๊ฐ ์๋, ์๋ณธ ์ด๋ฆ๊ณผ ํ์ ์ผ๋ก ๋ณ์ ๊ฐ์ ๊ฒ์ฌํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ํฌํจ๋ฉ๋๋ค.
- ํธ์ถ ์คํ ๊ฐ๋ ์ฑ: ์คํ ํธ๋ ์ด์ค๋ ์๋ณธ ํจ์ ์ด๋ฆ์ ํ์ํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ์ ์ฝ๊ฒ ์ดํดํ๊ณ ์ค๋ฅ๋ก ์ด์ด์ง ํธ์ถ ์์๋ฅผ ์๋ณํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ค๋จ์ : ์์ค ์ฝ๋ ํ์ผ์ ์ง์ ์ค๋จ์ ์ ์ค์ ํ๋ฉด, ํด๋น Wasm ๋ช ๋ น์ด๊ฐ ์คํ๋ ๋ ๋๋ฒ๊ฑฐ๊ฐ ์ ํํ๊ฒ ๋ฉ์ถฅ๋๋ค.
- ํฅ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ: ์ ๋ฐ์ ์ผ๋ก, ๋๋ฒ๊ทธ ์ ๋ณด๋ ์ปดํ์ผ๋ Wasm์ ๋๋ฒ๊น ํ๋ ์ด๋ ค์ด ์์ ์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๊ณ ์์ค ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ๊ณผ ๋น์ทํ ์ต์ํ๊ณ ์์ฐ์ ์ธ ๊ฒฝํ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค. ์ด๊ฒ์ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ WebAssembly ์ํ๊ณ๋ก ์ ์นํ๊ณ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
ํด๋ง ์ง์
Wasm ๋๋ฒ๊น ์คํ ๋ฆฌ๋ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ํ ์ปค์คํ ์น์ ์ฑํ ๋๋ถ์ ํฌ๊ฒ ์ฑ์ํด์ก์ต๋๋ค. ์ด๋ฌํ ์น์ ์ ํ์ฉํ๋ ์ฃผ์ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: Chrome, Firefox, Edge์ ๊ฐ์ ์ต์ ๋ธ๋ผ์ฐ์ ์๋ Wasm ์ปค์คํ ์น์ ์์ DWARF(์ข ์ข ์์ค ๋งต๊ณผ ํตํฉ๋จ)๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ ๊ตํ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์ JavaScript ๋๋ฒ๊ฑฐ ์ธํฐํ์ด์ค ๋ด์์ ์ง์ Wasm ๋ชจ๋์ ์์ค ์์ค ๋๋ฒ๊น ์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ค.
- ๋
๋ฆฝํ ๋๋ฒ๊ฑฐ:
wasm-debug์ ๊ฐ์ ๋๊ตฌ๋ IDE ๋ด ํตํฉ(์: VS Code ํ์ฅ ํ๋ก๊ทธ๋จ)์ ์ปค์คํ ์น์ ์์ ๋ฐ๊ฒฌ๋๋ DWARF ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๊ฐ๋ ฅํ Wasm ๋๋ฒ๊น ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. - ์ปดํ์ผ๋ฌ ๋ฐ ํด์ฒด์ธ: LLVM(Clang ๋ฐ Rustc์์ ์ฌ์ฉ)๊ณผ ๊ฐ์ ์ปดํ์ผ๋ฌ๋ DWARF ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๊ณ ๋๋ฒ๊น ํ๋๊ทธ๊ฐ ํ์ฑํ๋ ๋ ์ด๋ฅผ Wasm ๋ฐ์ด๋๋ฆฌ์ ์ปค์คํ ์น์ ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์๋ฒ ๋ฉํ๋ ์ญํ ์ ํฉ๋๋ค.
์ค์ฉ์ ์ธ ์: Wasm ๋๋ฒ๊ฑฐ๊ฐ ์ปค์คํ ์น์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
Wasm ๋๋ฒ๊ฑฐ๊ฐ ์ปค์คํ ์น์ ์ ํ์ฉํ๋ ๊ฐ๋ ์ ํ๋ฆ์ ์ถ์ ํด ๋ณด๊ฒ ์ต๋๋ค:
- ์ปดํ์ผ:
rustc --target wasm32-unknown-unknown --emit=wasm -g my_app.rs์ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ Rust ์ฝ๋(์:my_app.rs)๋ฅผ WebAssembly๋ก ์ปดํ์ผํฉ๋๋ค.-gํ๋๊ทธ๋ ์ปดํ์ผ๋ฌ์๊ฒ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๋๋ก ์ง์ํฉ๋๋ค. - ๋๋ฒ๊ทธ ์ ๋ณด ์๋ฒ ๋ฉ: Rust ์ปดํ์ผ๋ฌ(LLVM์ ํตํด)๋ DWARF ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๊ฒฐ๊ณผ๋ฌผ์ธ
my_app.wasmํ์ผ์custom ".debug_info",custom ".debug_line",custom ".debug_str"๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ์ปค์คํ ์น์ ์ผ๋ก ์๋ฒ ๋ํฉ๋๋ค. ์ด ์น์ ๋ค์ Wasm ๋ช ๋ น์ด์์my_app.rs์์ค ์ฝ๋๋ก์ ๋งคํ์ ํฌํจํฉ๋๋ค. - ๋ชจ๋ ๋ก๋ฉ: ๋ธ๋ผ์ฐ์ ๋ ๋
๋ฆฝํ Wasm ๋ฐํ์์์
my_app.wasm์ ๋ก๋ํฉ๋๋ค. - ๋๋ฒ๊ฑฐ ์ด๊ธฐํ: ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด๊ฑฐ๋ ๋ ๋ฆฝํ ๋๋ฒ๊ฑฐ๋ฅผ ์ฐ๊ฒฐํ๋ฉด, ๋ก๋๋ Wasm ๋ชจ๋์ ๊ฒ์ฌํฉ๋๋ค.
- ์ถ์ถ ๋ฐ ํด์: ๋๋ฒ๊ฑฐ๋ ์ด๋ฆ์ด DWARF ์น์
(์:
".debug_info")์ ํด๋นํ๋ ๋ชจ๋ ์ปค์คํ ์น์ ์ ์๋ณํ๊ณ ์ถ์ถํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ์ปค์คํ ์น์ ๋ด์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ DWARF ๋ช ์ธ์ ๋ฐ๋ผ ํ์ฑํฉ๋๋ค. - ์์ค ์ฝ๋ ๋งคํ: ํ์ฑ๋ DWARF ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ, ๋๋ฒ๊ฑฐ๋ Wasm ๋ช
๋ น์ด ์ฃผ์๋ฅผ
my_app.rs์ ํน์ ์ค๊ณผ ์ด์, Wasm ๋ก์ปฌ/์ ์ญ ์ธ๋ฑ์ค๋ฅผ ์๋ณธ ๋ณ์ ์ด๋ฆ์ ๋งคํํ๋ ๋ด๋ถ ๋ชจ๋ธ์ ๊ตฌ์ถํฉ๋๋ค. - ๋ํํ ๋๋ฒ๊น
: ์ด์
my_app.rs์ 10๋ฒ์งธ ์ค์ ์ค๋จ์ ์ ์ค์ ํ๋ฉด, ๋๋ฒ๊ฑฐ๋ ์ด๋ค Wasm ๋ช ๋ น์ด๊ฐ ๊ทธ ์ค์ ํด๋นํ๋์ง ์๊ณ ์์ต๋๋ค. ์คํ์ด ๊ทธ ๋ช ๋ น์ด์ ๋๋ฌํ๋ฉด, ๋๋ฒ๊ฑฐ๋ ์ผ์ ์ค์งํ๊ณ , ์๋ณธ ์์ค ์ฝ๋๋ฅผ ํ์ํ๋ฉฐ, Rust ์ด๋ฆ์ผ๋ก ๋ณ์๋ฅผ ๊ฒ์ฌํ๊ณ Rust ํจ์ ์ด๋ฆ์ผ๋ก ํธ์ถ ์คํ์ ํ์ํ ์ ์๊ฒ ํฉ๋๋ค.
์ปค์คํ ์น์ ์ ์ํด ๊ฐ๋ฅํด์ง ์ด ์ํํ ํตํฉ์ WebAssembly๋ฅผ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ตํ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ํจ์ฌ ๋ ์ ๊ทผํ๊ธฐ ์ฝ๊ณ ๊ฐ๋ ฅํ ํ๋ซํผ์ผ๋ก ๋ง๋ญ๋๋ค.
์ปค์คํ ์น์ ์์ฑ ๋ฐ ๊ด๋ฆฌ
๊ทธ ์ค์์ฑ์ ๋ํด ๋ ผ์ํ์ง๋ง, ์ปค์คํ ์น์ ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ปดํ์ผ๋ฌ ํด์ฒด์ธ
๋๋ถ๋ถ์ ๊ฐ๋ฐ์์๊ฒ ์ปค์คํ ์น์ ์ ์ ํํ ์ปดํ์ผ๋ฌ ํด์ฒด์ธ์ ์ํด ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด:
- LLVM ๊ธฐ๋ฐ ์ปดํ์ผ๋ฌ (Clang, Rustc): C/C++ ๋๋ Rust๋ฅผ ๋๋ฒ๊ทธ ์ฌ๋ณผ์ ํ์ฑํํ์ฌ(์:
-g) Wasm์ผ๋ก ์ปดํ์ผํ ๋, LLVM์ ์๋์ผ๋ก DWARF ์ ๋ณด๋ฅผ ์์ฑํ๊ณ ์ปค์คํ ์น์ ์ ์๋ฒ ๋ํฉ๋๋ค. - Go: Go ์ปดํ์ผ๋ฌ๋ Wasm์ ๋์์ผ๋ก ํ ์ ์์ผ๋ฉฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ ์ฌํ๊ฒ ์๋ฒ ๋ํฉ๋๋ค.
์๋ ์์ฑ ๋ฐ ์กฐ์
๊ณ ๊ธ ์ฌ์ฉ ์ฌ๋ก๋ ์ปค์คํ
Wasm ํด๋ง์ ๊ฐ๋ฐํ ๋, ์ปค์คํ
์น์
์ ์ง์ ์ ์ธ ์กฐ์์ด ํ์ํ ์ ์์ต๋๋ค. Binaryen(ํนํ wasm-opt), ์๋ ๊ตฌ์ฑ์ ์ํ WebAssembly Text Format(WAT), ๋๋ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ Wasm ์กฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ ์ปค์คํ
์น์
์ ์ถ๊ฐ, ์ ๊ฑฐ ๋๋ ์์ ํ๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, Binaryen์ Text Format(WAT)์ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ์ปค์คํ ์น์ ์ ์๋์ผ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค:
(module (custom "my_metadata" (data "This is my custom data payload.")) ;; ... Wasm ๋ชจ๋์ ๋๋จธ์ง ๋ถ๋ถ )
์ด WAT์ด Wasm ๋ฐ์ด๋๋ฆฌ๋ก ๋ณํ๋๋ฉด, "my_metadata"๋ผ๋ ์ด๋ฆ๊ณผ ์ง์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ์ปค์คํ
์น์
์ด ํฌํจ๋ฉ๋๋ค.
์ปค์คํ ์น์ ํ์ฑ
์ปค์คํ
์น์
์ ์๋นํ๋ ๋๊ตฌ๋ Wasm ๋ฐ์ด๋๋ฆฌ ํฌ๋งท์ ํ์ฑํ๊ณ , ์ปค์คํ
์น์
(ID 0x00์ผ๋ก)์ ์๋ณํ๊ณ , ๊ทธ ์ด๋ฆ์ ์ฝ์ ๋ค์, ํฉ์๋ ํ์(์: DWARF, JSON ๋๋ ๋
์ ์ ์ธ ๋ฐ์ด๋๋ฆฌ ๊ตฌ์กฐ)์ ๋ฐ๋ผ ํน์ ํ์ด๋ก๋๋ฅผ ํด์ํด์ผ ํฉ๋๋ค.
์ปค์คํ ์น์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ปค์คํ ์น์ ์ด ํจ๊ณผ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋๋ก ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธ๋ก๋ฒ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ๊ณ ์ ํ๊ณ ์์ ์ ์ธ ์ด๋ฆ ์ง์ : ํญ์ ์ปค์คํ
์น์
์ ๋ช
ํํ๊ณ ๊ณ ์ ํ ์ด๋ฆ์ ์ฌ์ฉํ์ญ์์ค. ์ ์ ๋ ํผ์กํด์ง๋ Wasm ์ํ๊ณ์์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋๋ฉ์ธ๊ณผ ๊ฐ์ ์ ๋์ฌ(์:
"com.example.tool.config")๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. - ํ์ด๋ก๋ ๊ตฌ์กฐ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ: ๋ณต์กํ ํ์ด๋ก๋์ ๊ฒฝ์ฐ, ๋ช ํํ ์คํค๋ง(์: Protocol Buffers, FlatBuffers ๋๋ ๊ฐ๋จํ ์ปค์คํ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท ์ฌ์ฉ)๋ฅผ ์ ์ํ์ญ์์ค. ์คํค๋ง๊ฐ ์งํํ ์ ์๋ค๋ฉด, ํ์ด๋ก๋ ์์ฒด์ ๋ฒ์ ๋ฒํธ๋ฅผ ์๋ฒ ๋ํ์ญ์์ค. ์ด๋ฅผ ํตํด ๋๊ตฌ๋ ์ปค์คํ ๋ฐ์ดํฐ์ ์ด์ ๋๋ ์ต์ ๋ฒ์ ์ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ฌธ์ํ: ๋๊ตฌ๋ฅผ ์ํด ์ปค์คํ ์น์ ์ ๋ง๋๋ ๊ฒฝ์ฐ, ๊ทธ ๋ชฉ์ , ๊ตฌ์กฐ ๋ฐ ์์๋๋ ๋์์ ์ฒ ์ ํ ๋ฌธ์ํํ์ญ์์ค. ์ด๋ฅผ ํตํด ๋ค๋ฅธ ๊ฐ๋ฐ์์ ๋๊ตฌ๊ฐ ์ปค์คํ ๋ฐ์ดํฐ์ ํตํฉํ ์ ์์ต๋๋ค.
- ํฌ๊ธฐ ๊ณ ๋ ค ์ฌํญ: ์ปค์คํ ์น์ ์ ์ ์ฐํ์ง๋ง, Wasm ๋ชจ๋์ ์ ์ฒด ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ์ํจ๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ๋๋ฒ๊ทธ ์ ๋ณด, ํนํ DWARF๋ ์๋นํ ํด ์ ์์ต๋๋ค. ์น ๋ฐฐํฌ์ ๊ฒฝ์ฐ, ํ๋ก๋์ ๋น๋์์ ๋ถํ์ํ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, Wasm ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๊ฒ ์ ์งํ๊ธฐ ์ํด ์ธ๋ถ ์์ค ๋งต์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ํ์คํ ์ธ์: ์๋ก์ด ์ปค์คํ ์น์ ์ ๋ง๋ค๊ธฐ ์ ์, ๊ธฐ์กด ์ปค๋ฎค๋ํฐ ํ์ค์ด๋ ์ ์(WATI์ ์๋ ๊ฒ๋ค์ฒ๋ผ)์ด ์ด๋ฏธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๊ณ ์๋์ง ํ์ธํ์ญ์์ค. ๊ธฐ์กด ํ์ค์ ๊ธฐ์ฌํ๊ฑฐ๋ ์ฑํํ๋ ๊ฒ์ ์ ์ฒด Wasm ์ํ๊ณ์ ์ด์ต์ด ๋ฉ๋๋ค.
์ปค์คํ ์น์ ์ ๋ฏธ๋
WebAssembly์์ ์ปค์คํ ์น์ ์ ์ญํ ์ ์ํ๊ณ๊ฐ ํ์ฅ๋๊ณ ์ฑ์ํจ์ ๋ฐ๋ผ ๋์ฑ ์ปค์ง ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค:
- ๋ ๋ง์ ํ์คํ: ์ผ๋ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ๋๋ฒ๊น ์๋๋ฆฌ์ค์ ๋ํด ๋ ๋ง์ ์ปค์คํ ์น์ ์ด ์ฌ์ค์์ด๊ฑฐ๋ ๊ณต์์ ์ผ๋ก ํ์คํ๋์ด Wasm ๊ฐ๋ฐ ๊ฒฝํ์ ๋์ฑ ํ๋ถํ๊ฒ ํ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
- ๊ณ ๊ธ ๋๋ฒ๊น ๋ฐ ํ๋กํ์ผ๋ง: ๊ธฐ๋ณธ ์์ค ์์ค ๋๋ฒ๊น ์ ๋์ด, ์ปค์คํ ์น์ ์ ๊ณ ๊ธ ํ๋กํ์ผ๋ง(์: ์ฑ๋ฅ ์นด์ดํฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ธ๋ถ ์ ๋ณด), ์๋ํ์ด์ (์: AddressSanitizer, UndefinedBehaviorSanitizer) ๋๋ ์ฌ์ง์ด ์ ๋ฌธ ๋ณด์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ํ ์ ๋ณด๋ฅผ ๋ด์ ์ ์์ต๋๋ค.
- ์ํ๊ณ ์ฑ์ฅ: ์๋ก์ด Wasm ๋๊ตฌ์ ํธ์คํธ ํ๊ฒฝ์ ์์ฌํ ์ฌ์ง์์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ปค์คํ ์น์ ์ ํ์ฉํ์ฌ, ์์ง ๊ตฌ์๋์ง ์์ ํ์ ์ ์ธ ๊ธฐ๋ฅ๊ณผ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ ๋๋ค.
- Wasm ์ปดํฌ๋ํธ ๋ชจ๋ธ: WebAssembly ์ปดํฌ๋ํธ ๋ชจ๋ธ์ด ์ฃผ๋ชฉ์ ๋ฐ์ผ๋ฉด์, ์ปค์คํ ์น์ ์ ํต์ฌ Wasm ๋ชจ๋์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง๋ง ์ปดํฌ๋ํธ ๊ฐ ํต์ ๋ฐ ๊ตฌ์ฑ์ ํ์์ ์ธ ์ปดํฌ๋ํธ๋ณ ๋ฉํ๋ฐ์ดํฐ, ์ธํฐํ์ด์ค ์ ์ ๋๋ ๋งํน ์ ๋ณด๋ฅผ ์๋ฒ ๋ฉํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
WebAssembly ์ปค์คํ ์น์ ์ ๊ฐ๊ฒฐํ ํต์ฌ๊ณผ ๊ฐ๋ ฅํ ํ์ฅ์ฑ์ด๋ผ๋ Wasm ์ฒ ํ์ ์์ฆํ๋ ์ฐ์ํ๊ณ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์์์ ๋ฐ์ดํฐ๋ฅผ Wasm ๋ชจ๋ ๋ด์ ๋ฐํ์ ์คํ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์๋ฒ ๋ํ ์ ์๊ฒ ํจ์ผ๋ก์จ, ํ๋ถํ๊ณ ์์ฐ์ ์ธ ๊ฐ๋ฐ ์ํ๊ณ๋ฅผ ์ํ ์ค์ํ ์ธํ๋ผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋์ ์ถ์ฒ์ ๋น๋ ๊ณผ์ ์ ์ค๋ช ํ๋ ํ์ ๋ฉํ๋ฐ์ดํฐ ์๋ฒ ๋ฉ์์๋ถํฐ ์์ค ์์ค ๋๋ฒ๊น ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํฌ๊ด์ ์ธ ๋๋ฒ๊ทธ ์ ๋ณด ์ ๊ณต์ ์ด๋ฅด๊ธฐ๊น์ง, ์ปค์คํ ์น์ ์ ํ์ ๋ถ๊ฐ๊ฒฐํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ์ ์์ค ์ปดํ์ผ๋ Wasm๊ณผ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ ๊ณ ์์ค ์์ค ์ธ์ด ์ฌ์ด์ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์, WebAssembly๋ฅผ ๋น ๋ฅด๊ณ ์์ ํ ๋ฐํ์์ผ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ์ ์นํ์ ์ธ ํ๋ซํผ์ผ๋ก ๋ง๋ญ๋๋ค. WebAssembly๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ํ์ฅ์ ๊ณ์ํจ์ ๋ฐ๋ผ, ์ปค์คํ ์น์ ์ ํ๋ช ํ ์ฌ์ฉ์ ๊ทธ ์ฑ๊ณต์ ์ด์์ผ๋ก ๋จ์ ๊ฒ์ด๋ฉฐ, ํด๋ง์ ํ์ ์ ์ฃผ๋ํ๊ณ ์์ผ๋ก ๋ช ๋ ๋์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํฌ ๊ฒ์ ๋๋ค.